package com.jinhongone.pattern.creater.prototype.demo;

/*
 * prototype原型模式：
 *   介绍：原型模式就是克隆模式，根据原型对象clone一个新对象。
 *   模型角色：
 *       1.抽象原型类：java中表现为Cloneable接口，实现该接口的类视为具体原型类，
 *                  必须要实现该接口，否则调用Object的clone()方法会抛出CloneNotSupportedException异常。
 *       2.具体原型：具体可被clone对象，实现Cloneable接口，重写clone方法（重写Object中的clone），实现克隆逻辑。
 *       3.调用类：调用具体原型类中clone方法，获得一个新的具体克隆类对象
 *   克隆分为：浅克隆（新旧对象中引用类型是一个引用地址）、深克隆（对象中引用类型也是新的）
 * */
public class Realizetype implements Cloneable {

    public Realizetype() {
        System.out.println("Realizetype对象被创建");
    }

    @Override
    protected Realizetype clone() throws CloneNotSupportedException {
        System.out.println("调用Realizetype clone方法");
        return (Realizetype) super.clone();
    }
}
